Software application programmers often write code that is intended to be used in some other location of a program. In the case of a code library, the code may be intended for use in another program entirely. In order to ensure that this code runs properly, the software applications programmers must ensure that all the data and functions required by the code exist. This is usually done by testing some data structure associated with the code in question, such as a simple variable indicating that the required data does or does not exist. Every use of the code, at some level, has to do this testing which leads to a longer and more complicated way of expressing and using the code.
In compiled languages, pre-processors exist that can do this testing before code is executed or included in compiled code. In a compiled language application, when a pre-processor macro is defined, a test may be embedded in the pre-processor macro definition. Then when the pre-processor macro is used in a software application, the pre-processor macro may simply be called and tested by the pre-processor. In other programming languages, such as interpreted computer programming languages, there is no pre-processor and handling the situation where a function, object, method, data structure, etc. may or may not exist, becomes very confusing.